package com.leet.code.simple_array;

import java.util.ArrayList;
import java.util.List;

/**
 * @description:    228.汇总区间
 * @author: WYG
 * @time: 2021/1/4 19:17
 */

public class SummaryRanges {
    public List<String> summaryRanges(int[] nums) {
        int size = nums.length;
        List<String> res = new ArrayList<>();
        //如果数组长度为0,则返回空字符串
        if (size == 0) {
            return res;
        }
        //区间的开始位置以及结束位置
        int start = nums[0];
        int end = 0;
        //如果数组长度为1,则返回nums[0]组成的字符串
        if (size == 1) {
            res.add(start + "");
            return res;
        }
        //遍历数组中的元素
        for (int i = 1; i < size; i++) {
            //如果两元素的差值不为1,那么说明这是在间断点,区间结束的位置就是nums[i - 1]
            if (nums[i] - nums[i - 1] != 1) {
                end = nums[i - 1];
                //根据此时的开始喝结束的位置添加区间
                if (end == start) {
                    res.add("" + end);
                } else {
                    res.add(start + "->" + end);
                }
                //更新开始位置
                start = nums[i];
            }
            //如果遍历到最后一个元素,此时区间的开始位置和nums[i]不相等就添加区间"start -> nums[i]"
            if ((i == size - 1) && start != nums[i]) {
                res.add(start + "->" + nums[i]);
            }
            //如果遍历到最后一个元素,此时区间的开始位置和nums[i]相等就添加区间"start"
            if ((i == size - 1) && start == nums[i]) {
                res.add(start + "");
            }
        }
        return res;
    }
}
